<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>async函数</title>
  </head>
  <body>
    <script>
      /*
        async函数：
        1.async函数的返回值为Promise对象
        2.Promise对象的结果由async函数执行的返回值决定

        await表达式：
        1.await必须写在async函数中
        2.await右侧的表达式一般为Promise对象
        3.await返回的是Promise成功的值
        4.await的Promise失败了后面程序就会中断，
        就会抛出异常走到自身then和catch回调，或者通过try...catch捕获处理
        */
      async function fn() {
        // 返回的结果不是一个Promise类型的对象，都会转为Promise对象
        // return 3;
        // return Promise.reject("error");
        // 抛出错误，返回是一个失败的Promise
        throw new Error("失败了");
      }

      const result = fn();
      //   console.log(result);
      result.then(
        value => {
          console.log(value);
        },
        reason => {
          console.log(reason);
        }
      );
    </script>
  </body>
</html>
